import os
import subprocess
from src.globle import *

name =""

def up_to_ftp():
    CLEAR_SCREEN['clear']()
    print_head(head=[
        "..............本脚本作用：查找数据盘和/home/文件夹下某时间段修改过的文件并打包................."
        "..............注意：比如2021年创建的，但是2022年修改过的不算.................................."
        "..............注意：数据盘应保有足够大的空间执行打包操作，空间不够大的不适合这个脚本。..........."
        "..............备份的数据多则备份时间长，备份中不要按回车，请耐心等待............................"
        "..............确定上面的都读过了，请选择数字.................................................."
    ])
    print_menu_options(menu_options=[
        "第一次执行请直接按1打包不成功重试",
        "打包成功，但是因为种种原因没能上传成功请按2"
    ])
    select_menu(menu_dict={
        '0': return_to_previous_menu,
        '1': lambda: {pack_file,rename_file,remote_file},
        '2': lambda: {get_file_name,remote_file}
    })


def pack_file():
    starttime = input("{COLOR_RED} 请输入要打包文件的起始时间如 2022-01-01 :")
    endtime = input("{COLOR_RED} 请输入要打包文件的结束时间如 2023-01-01 :")
    subprocess.run(["find", "/data/", "/home/", "!", "-name", "'.*'", "-a", "!","-regex", "'.*/\.[^/]*/.*'", "-type", "f", "-newermt", starttime, "!", "-newermt",endtime, "-print0",
                   "|", "xargs", "-0", "tar", "-czPf", "/data/test.tar.gz"])
    print("\n")
    print("{COLOR_RED} 已经打包好了，在/data/下，目前叫test.tar.gz")

def rename_file():
    print_head(head=[
        ".........接下来我们将给你即将打包的文件取个名字，比如：张三................."
        ".........建议取自己的名字，但不要跟其他人的名称重复,尤其不要取111,222之类的名......."
        ".........切换好你的输入法..........."
        ""
    ])
    global name
    name = input("{COLOR_RED} 请输入你的文件名:")
    print("{COLOR_NONE} 这个文件将被改为：{COLOR_RED}{}.tar.gz{COLOR_NONE}，按任意键继续进行操作:".format(name))
    get_pause()
    os.rename("/data/test.tar.gz", "/data/{}.tar.gz".format(name))
    os.chmod("/data/{}.tar.gz".format(name), 0o755)
    print("{COLOR_NONE} 已经重命名好了，此文件名为：{COLOR_RED}{}.tar.gz{COLOR_NONE}".format(name))

def remote_file():
    print_head(head=[
        ".........现在即将把这个文件传到ftp服务器上去................."
        ".........比如ftp目录为文件夹:upload/2021......."
        ".........为了安全此脚本内不内置服务器密码，需要自己输入一下..........."
        ".........上传的文件大则上传时间长，请耐心等待........."
        "了解后按任意键继续进行操作:"
    ])
    get_pause()
    addr = input("{COLOR_RED} 请输入服务器IP地址如 192.168.210.5 ")
    addr_pwd = input("{COLOR_RED} 请输入服务器端地址如 /ftpdata/upload/2021/ ")
    print("{COLOR_RED}请输入服务器密码:")
    password = getpass.getpass()
    global name
    subprocess.run(["scp", "/data/{}.tar.gz".format(name), "root@{}:{}{}".format(addr,addr_pwd, name),
                   "&&", "rm","-rif","/data/{}.tar.gz".format(name)])
    print("{COLOR_RED} 已经上传好了，请打开左下角开始菜单，找到FileZilla这个FTP软件查看{COLOR_NONE}")

def get_file_name():
    print_head(head=[
        ".........比如说你的数据盘下的文件为：张三.tar.gz,则直接输入：张三................."
    ])
    name_2 = input("{COLOR_YELLOW} 请输入文件名：")
    print("{COLOR_YELLOW} 要上传的文件名为：{COLOR_RED}{}.tar.gz{COLOR_NONE}，确定则按任意键继续进行操作:".format(name_2))
    get_pause()
